Software Index
I write a lot of code, some useful, some fun. This index lists my "proper" projects, which are in a reasonable shape, usable by other people and may even have releases. Not included are other peoples projects I contribute to, nor projects created for my academic tenure.
Feel free to contact me if you have any questions or need assistance with any projects listed here!

Wayprompt
A pinentry drop-in replacement for Wayland. Can also be used in scripts and as an ssh-askpass prompt.
Will work with all Wayland servers that support the zwlr-layer-shell protocol.


Wayve
A session locker with a built-in screen saver for Wayland. The screen savers are OpenGL fragment shaders. Loading custom shaders is supported.
Will work with all Wayland servers that support the ext-session-lock-v1 protocol.

Wayneko
An animated cat (or dog) for your Wayland desktop. Not quite a port of the original xneko, but just as charming.
Will work with all Wayland servers that support the zwlr-layer-shell protocol.

Wayloadmon
A desktop widget showing the recent system load in a scrolling bar chart. Useful and looks kinda neat.
Will work with all Wayland servers that support the zwlr-layer-shell protocol.

Wlclock
An xclock clone for Wayland. However, unlike xclock, it is a desktop widget rather than appearing as a regular window.
Will work with all Wayland servers that support the zwlr-layer-shell protocol.

NFM
Experimental terminal file manager which implements no file management operations itself and instead tries to integrate as tightly as possible with core utils and the users preferred programs. Designed to supplement the shell rather than replace it. Also the only terminal file manager which has real miller columns.

Snayk
A snake clone for Wayland.
I may or may not have written this out of spite after being annoyed by someone claiming it is impossible to use Wayland without a toolkit.

LavaLauncher
A dock-like launcher panel for Wayland. Supports executing arbitrary commands on click, scroll and touch. My first Wayland project.
LavaLauncher is currently not actively maintained. If you want
to use if, I recommend using
the lavalauncher-next
branch, which contains
improvements I have not merged into master by the time I
stopped maintaining it.
Will work with all Wayland servers that support the zwlr-layer-shell protocol.
Wayland utilities
lswt lists Wayland toplevels ("windows"). Will work on any Wayland server implementing either the foreign-toplevel-list-v1 or the wlr-foreign-toplevel-management-unstable-v1 protocol. git, releases, repology
wlopm is a utility for output power management, meaning it turns the screen off (without disabling the logical output, a bit like DPMS on X). For some odd reason, this seems to be my most popular project. Will work on any Wayland server implementing the wlr-output-power-management-unstable-v1 protocol. git, releases, repology
wat generates activation tokens. Graphical applications can use these tokens to indicate urgency or a relationship to a parent window. Will work on any Wayland server implementing the xdg-activation-v1 protocol. git, releases
River utilities
These are utility programs specifically for the river Wayland desktop. I would be very surprised if turn out to be useful (or even just work) on any other desktop. You probably should try out river by the way, it is pretty good.
riverguile allows you to create window layouts and configure river in guile scheme. Unfortunately, riverguile is incompatible with guile releases greater than 3.0.8 for now. git, releases
river-bnf allows you to switch back'n'forth between river tags. git
river-tag-overlay displays a pop-up whenever you switch tags or a tag becomes urgent. Very useful if you, like me, do not want to waste screen space to a status panel. git, releases
stacktile is an advanced layout generator. It arranges windows in sub-layouts which in turn are arranged in a meta-layout. It got its name from one of the possible sub-layouts: arranging windows like a stack of cards. Stacktile is superceded by riverguile. While in a perfectly functional state, I do no longer develop it any further. I will likely still merge patches though. git, releases
Libraries
zig-exre is a zig library for regular expressions, using vaguely Thompson-esque nondeterministic automata encoded as state machines. Probably faster than the regex library you are currently using. git
zig-spoon is a zig library for creating TUIs. Unlike other libraries, it provides low-level interfaces rather than high-level widgets. Likely has the best input parser of any zig terminal library. git
zig-ini is a tokenizer for the .ini file format for zig. It supports both the variant with and without semicolons. git
GRayL is a scientific raytracing library for simulating geometric optics. This was a project for a university course and as such is not in the best state, but I would like to revisit it at some point. git
lib-infinitesimal is a tokenizer for the .ini file format for C. There are many tokenizers for that format, but I liked none. git
Various
ansiscape draws procedurally generated landscapes to your terminal. That is it. git, releases
timeviz is a time visualizer for the terminal. A good example for an application created with zig-spoon, although these days I use emacs for time tracking. git
zomo is a very simple pomodoro timer for the terminal. I created it to try out the technique only to discover it simply does not work for me. The program still works though, if you need it. git
mpv-notify is a notification plugin for mpv. All other notification plugins are scripts rather than loaded modules and as such will simply spawn new notifications. This one will create a single one and then continously update it. Very handy if you use mpv as a music player. git
antares was a window manager for X11. My first "big" project. It had some interesting ideas I want to revisit eventually, but it also kinda sucked.